package com.mayikt;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @ClassName Test21
 * @Author 蚂蚁课堂余胜军 QQ644064779 www.mayikt.com
 * @Version V1.0
 **/
public class Test21 {
    private static Lock lock = new ReentrantLock(false);

    public static void main(String[] args) throws InterruptedException {
//
//        System.out.println("1");
//        Thread t1 = new Thread(() -> {
//            lock.lock();//--获取锁，但是没有释放
//        });
//        t1.start();
//        t1.join();
//        System.out.println("2");
//        lock.lock();// 阻塞状态： t1占用这吧锁但是就是不是释放 main 没有获取到变为阻塞状态
//        lock.lock();// 主线程获取锁
//        lock.lock();// 重入性
        //wait
//        ;
    }

    public static void a() {
        // 多个线程同时抢同一把锁，只有一个线程抢成功， 没有抢成功的线程 会变为阻塞状态。
        lock.lock();
        ;// 获取锁
        System.out.println("我是A方法");
        b();
        lock.unlock();// 释放
    }

    public static void b() {
        lock.lock();
        System.out.println("我是B方法");
        lock.unlock();// 释放
    }
}
